FAQ
F.A.Q.
Domande - Risposte
Creare un motore di ricerca interno al sito
Internet Provider
Software
Internet Provider
mail marketing
preventivi Internet
supporto tecnico
sms da web
download
corsi
lavoro
pagamenti
Internet Provider
 
FAQ
faq
news
Applicativi asp
Motomania

Creare un motore di ricerca interno al sito

Introduzione

Uno strumento di navigazione a mio avviso fondamentale in un sito è il motore di ricerca, ovvero una utility in grado di permettere ad un utente di trovare rapidamente quello che cerca, semplicemente immettendo una o più parole in una casella di testo ed avviare l'applicazione che tirerà fuori i risultati desiderati. Una simile applicazione deve basarsi su un contenitore di dati su cui effettuare una ricerca: lo strumento per eccellenza è ovviamente un database, ma è possibile implementare un simile meccanismo anche su file di testo o strutture Xml.

Ad ogni modo, in questo Articolo implementeremo un semplice ed efficace esempio basandosi su di un database Ms Access 2000.

Struttura del database

Il database che utilizzeremo, come già detto, sarà un file Access, preferibilmente nella versione 2000. Creiamo un file e chiamiamolo database.mdb; al suo interno creiamo la tabella documenti che sarà composta dai campi id (Contatore), titolo (Testo), url (Testo), descrizione (Memo). Supponiamo quindi che si tratti di un motore che ricerca articoli e/o documentazione interna al nostro sito, dove i file si chiamano, ad esempio, 01.asp, 02.asp, 03.asp ecc.

Riempiamo quindi il database con alcuni record di prova, avendo cura di specificare una descrizione dettagliata dell'argomentazione trattata, dato che sul campo descrizione effettueremo la ricerca.

La pagina di ricerca

Creiamo adesso il file ricerca.asp e disponiamolo nella stessa cartella in cui abbiamo salvato il database; questo file presenta sia il form Html di ricerca che il codice dell'applicazione.

Di seguito espongo il codice completo:

<%@LANGUAGE = JScript%>
<html>
    <head>
        <title>Cerca nel sito</title>
    </head>
<body>

<h3>Cerca nel sito</h3>

<form method="POST" action="ricerca.asp?cerca=OK">
    <input type="text" name="stringa">
    <input type="submit" value="Cerca">
</form>

<%
    var cerca = new String(Request.QueryString("cerca"));
    var testo = new String(Request.Form("stringa"));
    var apice = testo.replace(/'/g,"''");
    var stringa = apice.split(" ");
    if (cerca == "OK")
    {
        if (testo == "" || testo == "undefined")
        {
            Response.Write("<p>Inserire almeno una parola per effettuare una rcerca</p>");
        }
        else
        {
            var Cn = new ActiveXObject("ADODB.Connection");
                Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb"));
            var sql = "SELECT * FROM documenti WHERE";
            for (var i=0; i<stringa.length; i++)
            {
                if (i > 0)
                {
                    sql += " AND";
                }
                sql += " descrizione LIKE '%" + stringa[i] + "%'";
            }
            var Mostra = Cn.Execute(sql);
            if (Mostra.EOF)
            {
                Response.Write("<p>Nessun risultato</p>");
            }
            else
            {
                while (!Mostra.EOF)
                {
                    with (Response)
                    {
                        Write("<p>");
                        Write("<a href='" + Mostra("url") + "'>" +Mostra("titolo") + "</a><br>");
                        Write(Mostra("descrizione"));
                        Write("</p>");
                        Mostra.MoveNext();
                    }
                }
            }
            Cn.Close();
        }
    }
%>

</body>
</html>

Per quanto lungo ed articolato, lo script appena proposto è davvero semplice e di facile intuizione: passiamo dunque in rassegna le fasi fondamentali

Avendo utilizzato un'unica pagina per il modulo di ricerca e per il relativo script, dobbiamo fare in modo che quest'ultimo non parta automaticamente al caricamento della pagina: impostiamo quindi nella variabile di tipo QueryString cerca lo script; se il valore di questa variabile sarà OK allora faremo partire la ricerca:

<form method="POST" action="ricerca.asp?cerca=OK">

Fondamentale la fase di recupero dei dati:

var testo = new String(Request.Form("stringa"));
var apice = testo.replace(/'/g,"''");
var stringa = apice.split(" ");

La necessità è quella di evitare che un apice inserito nella stringa di ricerca generi un errore Sql; in secondo luogo dividiamo col metodo split() la nuova stringa appena generata, in modo da creare un Array di stringa, i cui item sono divisi per il carattere spazio (" ").

By-passiamo i controlli ed entriamo direttamente nell'else, e vediamo com'è composta la nostra stringa Sql. Per prima cosa dichiaro la variabile sql

var sql = "SELECT * FROM documenti WHERE";

e la lascio volutamente incompleta, dato che devo prevedere che l'utente potrà inserire un numero di parole per la ricerca a me sconosciuto; eseguo quindi un ciclo for

for (var i=0; i<stringa.length; i++)
{
    if (i > 0)
    {
        sql += " AND";
    }
    sql += " descrizione LIKE '%" + stringa[i] + "%'";
}

sulla lunghezza della stringa ed aggiungo dinamicamente elementi Sql in funzione della ricerca dell'utente. Per avere un'idea della stringa Sql che sarà generata, fate un Response.Write

Response.Write(sql)

 

Fonte: webmasterpoint.org
a cura di Lukeonweb.net


faq Indietro

 

Home | Chi Siamo | Contatti | Internet Provider | Software House | Active Web | Web Marketing | SMS | Realizzazioni | Preventivi | Supporto | Lavoro | Condizioni
RD Informatica - Str. Rupola 14 - 61122 Pesaro PU - Tel 0721 206238 Fax 0721 1835042 P.Iva 01241970415 - info@rdinformatica.com 
Estrattore Pagine Gialle
Applicativi asp
RD
Applicativi asp
Internet provider
Software House
Applicativi asp
SMS Web
Software SMS
Mailing Project